package com.yunhe.sms.service.system;

import com.yunhe.commens.dto.Pagedao;
import com.yunhe.sms.dto.Menus;
import com.yunhe.sms.dto.TreeNode;
import com.yunhe.sms.entity.system.Premission;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author LeiPeifeng
 * @version V1.0
 * @date 2017/10/19 0019 10:35
 * @Description: 权限操作
 */
public interface PremissionService {

    /**
     * 保存
     * @param premission
     */
    void save(Premission premission);

    /**
     * 删除
     * @param ids
     */
    void deleted(String ids);

    /**
     * 更新
     * @param premission
     */
    void update(Premission premission);

    /**
     * 根据id查询权限
     * @param id
     * @return
     */
    Premission find(Long id);

    /**
     * 根据用户id和类型查询角色，（左侧菜单树用）
     * @param rolId 权限id
     * @return 角色拥有的该权限类型下的全部权限
     */
    List<Premission> findPremi(@Param ( "rolId" ) Long rolId, @Param ( "type" ) int type);

    /**
     * 查询角色拥有的全部权限,（权限控制用）
     * @param rolId 角色的id
     * @return 返回角色所拥有权限的集合
     */
    List<Premission> findrollpremi(@Param ( "rolId" ) Long rolId);

    /**
     * 查询所有权限
     * @return
     */
    List<Premission> findList();

    /**
     * 查询所有权限，用于节点树
     * @return
     */
    List<TreeNode> findTreeNodes(Long rolId);

    /**
     * 查询某一类型的权限 如：模块的权限
     * @param type
     * @return
     */
    List<Premission> findType(int type);


    /**
     * 查询某一类型的权限 如：根据父级类型查询
     * @param parentId
     * @return
     */
    List<Premission> findParent(int parentId);

    /**
     * 查询否和条件的权限
     * @param str 条件
     * @return
     */
    List<Premission> findTypeList(String str);

    /**
     * 分页权限
     * @return
     */
    Pagedao<Premission> page( int offset,int limit);

    /**
     * 查询页面中的按钮
     * @param parent_id
     * @return
     */
    List<Premission> findButton(Long parent_id);
}
